<?php
namespace App\Services;


use Houdunwang\WeChat\WeChat;
use Modules\Wachat\Entities\Weixin;
use DB;
use Modules\Wachat\Entities\Wxkeywords;
use Modules\Wachat\Entities\Wxrule;

class WechatService
{

    public function __construct()
    {
        //获取wechat.php配置文件的内容
        $config = include base_path('config') . '/wechat.php';
        //获取数据库中的微信配置数据
        $wxconfig = Weixin::pluck('value','name')->toArray();
        //将2个数组合并
        $config = array_merge($config,$wxconfig);
        WeChat::config($config)->valid();
    }

    public function __call($name, $arguments)
    {
        return call_user_func_array([WeChat::class,$name],$arguments);
    }

    //加载关键词模板
    public function rule($id = 0){
        //获取编辑时候的规则和关键词数据
        $rule = Wxrule::findOrNew($id);
        //dd($rule['name']);
        return view('wachat::rule.rule',compact('rule'));
    }

    //处理规则数据和关键词数据方法
    public function SaveRule($id = 0){
        //获取post数据
        $post = json_decode(request()->input('rule'),true);
        //使用事务进行多表操作
        DB::beginTransaction();
            $rule = Wxrule::findOrNew($id);
            //相当于 $rule = Wxrule::find($id) ?: new Wxrule();
            $rule->name = $post['name'];
            //保存当前模板名称
            $rule->module = \HDModule::currentModule();
            $rule->save();
            //循环关键词数据，将其存入关键词表中
            //首先删除关系表的数据，然后才能添加
            Wxkeywords::where('rule_id',$rule['id'])->delete();
            foreach ($post['keywords'] as $v){
                Wxkeywords::create([
                    'key' => $v['key'],
                    'rule_id' => $rule['id'],
                ]);
            }
        DB::commit();
        //返回处理完成的数据
        return $rule;
    }

}